package com.hmall.common.config;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * RabbitMQ配置类
 * 功能：配置消息转换器，实现Java对象与AMQP消息的序列化/反序列化
 */
@Configuration
@ConditionalOnClass(RabbitTemplate.class) // 仅当类路径中存在RabbitTemplate时生效
public class MqConfig {

    /**
     * 配置消息转换器（将Java对象转换为JSON格式消息）
     * @return Jackson2JsonMessageConverter实例
     * 说明：
     * 1. 使用Jackson将对象序列化为JSON字符串
     * 2. 支持复杂对象、集合、枚举等类型转换
     * 3. 反序列化时自动推断对象类型
     */
    @Bean
    public MessageConverter messageConverter() {
        return new Jackson2JsonMessageConverter();
    }
}